package net.cyue.ort.llm;

import net.cyue.ort.llm.generator.GenerationConfig;
import net.cyue.ort.llm.template.ModelChatMessage;

import java.util.List;
import java.util.function.Consumer;

/**
 * LLM客户端接口
 * 提供高级API，封装底层的生成逻辑
 */
public interface LLMClient extends AutoCloseable {
    /**
     * 生成文本
     * @param prompt 输入提示
     * @param config 生成配置
     * @return 生成的文本
     */
    String generate(String prompt, GenerationConfig config);
    
    /**
     * 使用回调生成文本（流式输出）
     * @param prompt 输入提示
     * @param config 生成配置
     * @param callback token回调
     * @return 生成的文本
     */
    String generateWithCallback(String prompt, GenerationConfig config, Consumer<String> callback);
    
    /**
     * 聊天模式生成
     * @param messages 聊天消息列表
     * @param config 生成配置
     * @return 生成的回复
     */
    String chat(List<ModelChatMessage> messages, GenerationConfig config);
    
    /**
     * 设置调试模式
     * @param debug 是否启用调试
     * @return 当前客户端实例
     */
    LLMClient setDebug(boolean debug);
    
    /**
     * 应用聊天模板
     * @param messages 聊天消息列表
     * @return 格式化后的提示文本
     */
    String applyChatTemplate(List<ModelChatMessage> messages);
    
    @Override
    void close();
}

